package tech.waterism.service.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.List;

/**
 * Swagger/OpenAPI 配置
 * 
 * <p>配置API文档的基本信息、服务器信息等
 * 
 * @author 高宇
 * @since 1.0.0
 */
@Configuration
public class SwaggerConfig {

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("水文模型在线服务 API")
                        .version("1.0.0")
                        .description("""
                                ## 水文模型计算REST API服务
                                
                                提供经典水文模型的在线计算服务：
                                
                                ### 支持的模型
                                - **DHF (大伙房模型)** - 产汇流综合计算
                                - **LAG (滞后演算)** - 河道汇流模拟  
                                - **SMS_3 (三水源蓄满产流)** - 新安江产流模型
                                
                                ### 特性
                                - ✅ REST API接口，支持JSON格式输入输出
                                - ✅ 完整的参数验证和错误提示
                                - ✅ 详细的API文档和示例
                                - ✅ 支持批量计算
                                
                                ### 使用说明
                                1. 选择对应的模型接口
                                2. 按照接口定义准备输入参数
                                3. 发送POST请求进行计算
                                4. 获取模型计算结果
                                """)
                        .contact(new Contact()
                                .name("高宇")
                                .email("contact@waterism.tech")
                                .url("https://gitcode.com/dlut-water/model-java-demo"))
                        .license(new License()
                                .name("Apache License 2.0")
                                .url("https://www.apache.org/licenses/LICENSE-2.0")))
                .servers(List.of(
                        new Server()
                                .url("http://localhost:8080")
                                .description("本地开发服务器"),
                        new Server()
                                .url("http://59.46.146.11:8083")
                                .description("生产环境服务器（示例）")
                ));
    }
}

